home *** CD-ROM | disk | FTP | other *** search
- {
- TH> Apparently this contains the filepositions of the records (and also the
- TH> conference numbers?) but the numbers are not in normal format. Can somebody
- TH> please explain the format of this file and how to convert these numbers to
- TH> and from something TP can work with?
-
- There is supposed to be at least two doc's explaining the QWK format. I have
- here a unit that converts the integer to basicreal (i guess it's what you
- need..) I'm sorry I can't remember the of the doc's..
-
- ------------------- 8<
- }
- Unit BasConv;
-
- Interface
- Function BasicReal2Long(InValue: LongInt): LongInt;
- {Convert Basic Short Reals to LongInts}
-
- Function Long2BasicReal(InValue: LongInt): LongInt;
- {Convert LongInts to Basic Short Reals}
-
- Implementation
-
- Function BasicReal2Long(InValue: LongInt): LongInt;
-
- Var
- Temp: LongInt;
- Expon: Integer;
-
- Begin
- Expon := ((InValue shr 24) and $ff) - 152;
- Temp := (InValue and $007FFFFF) or $00800000;
- If Expon < 0 Then
- Temp := Temp shr Abs(Expon)
- Else
- Temp := Temp shl Expon;
- If (InValue and $00800000) <> 0 Then
- BasicReal2Long := -Temp
- Else
- BasicReal2Long := Temp;
- If Expon = 0 Then
- BasicReal2Long := 0;
- End;
-
-
- Function Long2BasicReal(InValue: LongInt): LongInt;
- Var
- Negative: Boolean;
- Expon: LongInt;
-
- Begin
- If InValue = 0 Then
- Long2BasicReal := 0
- Else
- Begin
- If InValue < 0 Then
- Begin
- Negative := True;
- InValue := Abs(InValue);
- End
- Else
- Negative := False;
- Expon := 152;
- If InValue < $007FFFFF Then
- While ((InValue and $00800000) = 0) Do
- Begin
- InValue := InValue shl 1;
- Dec(Expon);
- End
- Else
- While ((InValue And $FF000000) <> 0) Do
- Begin
- InValue := InValue shr 1;
- Inc(Expon);
- End;
- InValue := InValue And $007FFFFF;
- If Negative Then
- InValue := InValue Or $00800000;
- Long2BasicReal := InValue + (Expon shl 24);
- End;
- End;
-
- End.